"""
is   is not

  is  == 的区别
  == 用来比较两个对象的值是否相等
  is 检查两个变量是否指向内存同一个对象
    判断一个值是否为None 常用is
"""
def f1():
    x = "abc"
    y = 'abc'
    print( x is y) # 字符串 指向都是同一个内存地址 即判断值也判读地址值
    print( x == y) # 只是判断值是否相等
    z = None # python中一种数据类型
    print( x is z)
    print( y is not z )

f1()
"""
    break 和 continue
    循环的else
"""
def f2():
    """
       1. 吃苹果，循环吃5个苹果，当吃完第三个就吃饱了，第四个和第五个就不吃了
        用 while
    """
    count = 1
    apple = 5
    while count <= apple:
        if count == 4:#打算吃第四个
            print("吃饱了,不吃了")
            break
        print(f'吃了第{count}个苹果')
        count += 1

    """
           2. 吃苹果，循环吃5个苹果，当吃到第三个的时候吃出了一个虫子，第三个就不吃了，继续吃第四个和第五个
            用 while continue
        """
    count = 1
    while count <= apple:
        if count == 3:
            print("吃出了一条大虫子，这个苹果不吃了")
            count += 1
            continue
        print(f'吃了第{count}个苹果')
        count += 1

    #循环的else  正常结束后执行else
    count = 1
    apple = 5
    while count <= apple:
        if count == 4:  # 打算吃第四个
            print("吃饱了,不吃了")
            count += 1
            continue # 跳过了本次循环，但是也是正常的结束循环
            #break # 非正常结束循环
        print(f'吃了第{count}个苹果')
        count += 1
    else:
        print("我爱吃苹果")
f2()

"""
三目(元)运算符
Java   c = a > b ? a :b
python if else
"""
def f3():
    a = 3
    b = 2
    c = a if a > b else b # 默认给c赋值a,如果a>b不成立 c赋值为b
    print(c)
f3()

"""
all:用于判断序列中的元素是否都为True,如果都是True,返回True,否则返回为False
any:用于判断序列中的元素是否都为False,如果都是False，返回False,否则返回True
    为False: 0  空值(什么空值算False) None False
"""
def f4():
    print("all")
    print("是否为True",all( ["a","b","c","d"] ))#True
    print("是否为True", all(["a", "b", "", "d"]))#  空格不是空值
    print("是否为True", all([0,1,2,3,"a", "b", "c", "d"])) #False
    print("空列表是True还是False:",all( [] ))# 空列表 为 True
    print("空元组是True还是False:",all( () ))# 空列表 为 True

    print("any")
    print("是否为True", any(["a", "b", "c", "d"]))  # True
    print("是否为True", any(["a", "b", "", "d"]))  # True True False True ==> True
    print("是否为True", all([0,"",False,None]))  # False
    print("空列表是True还是False:", any([]))  # 空列表 为 False
    print("空元组是True还是False:", any(()))  # 空列表 为 False

    # 示例：检查列表中是否所有元素都为正数，并将结果打印
    values = [1,2,3,-4,5]
    print("结果：",all(  x > 0  for x in values )  )#all(True True True False True)


f4()

"""
enumerate()函数  用于将一个可遍历的序列(列表，元组，字符串)组合一个序列序列，同时列出数据和索引值
"""
def f5():
    list1 = ["a","b","c","d"]
    t = enumerate(list1,start=1)#第一个参数是序列，第二个参数是起始值 默认为0
    for index,elem in t:
        print("索引值：",index,"值为：",elem)

f5()